<?php
// 文件名 api/controller/Enrollment.php
namespace app\api\controller;

use app\common\controller\Api;


/**
 * 报名接口
 */
class Enrollment extends Api
{
    protected $noNeedLogin = [];
    protected $noNeedRight = ['*'];

    /** 
     * 报名列表
     *
     */

     public function index()
     {
         $user_id = $this->auth->id; // 获取当前登录用户ID
         $per_page = input('?param.per_page')?input('param.per_page'):6;
         // 用于获取用户报名信息
         $map['user_id'] = $user_id;
         
         $data = model('Enrollment')
             ->with('activity')
             ->where($map)
             ->order('createtime desc') // 排序字段
             ->paginate($per_page);
 
         $this->success('查询成功！', $data);    
     }


    // public function index()
    // {
    //     $user_id = $this->auth->id; // 获取当前登录用户ID
    //     $per_page = input('?param.per_page')?input('param.per_page'):6;
    //     $activity_id = input('?param.activity_id')?input('param.activity_id'):0; // 获取活动签到列表
        
    //     $map = [];       
    //     if($activity_id>0){ // 用于获取活动签到列表
    //         // 获取活动管理员ID集
    //         $user_ids = model('Activity')->wher('id',$activity_id)->value('user_ids');
    //         $user_ids_arr = explode(',',$user_ids);
    //         // 判断当前登录用户是否是活动管理员
    //         if(in_array($user_id, $user_ids_arr)){
    //             $map['activity_id'] = $activity_id;
    //             $map['status'] = '2'; // 只获取已签到信息
    //         }else{
    //             $this->error('你不是活动管理员！');  
    //         }
    //     }else{ // 用于获取用户报名信息
    //         $map['user_id'] = $user_id;
    //     }
    //     $data = model('Enrollment')
    //         ->where($map)
    //         ->order('createtime desc') // 排序字段
    //         ->paginate($per_page);

    //     $this->success('查询成功！', $data);    
    // }


    // public function index2()
    // {
    //     $user_id = $this->auth->id; // 获取当前登录用户ID
    //     $per_page = input('?param.per_page')?input('param.per_page'):6;
    //     // 用于获取用户报名信息
    //     $map['user_id'] = $user_id;
        
    //     $data = model('Enrollment')
    //         ->with('activity')
    //         ->where($map)
    //         ->order('createtime desc') // 排序字段
    //         ->paginate($per_page);

    //     $this->success('查询成功！', $data);    
    // }

    public function index3()
    {
              if(!input('?param.acid')){
            $this->error('参数不正确！');   
        }
        
        $data = model('Activity')
            ->where('id',input('acid'))
            ->find();

        $this->success('查询成功！', $data);    
  
    }

    // 报名详情
    public function detail(){
        if(!input('?param.id')){
            $this->error('参数不正确！');   
        }
        $data = model('Enrollment')
            ->where('id',input('id'))
            ->find();

        $this->success('查询成功！', $data);    
    }


// // 获取活动报名列表
// public function enrollment_list(){
//     $user_id = $this->auth->id; // 获取当前登录用户ID
//     // $user_id=1;
//     $per_page = input('?param.per_page')?input('param.per_page'):6;

//    $activity_id = input('?param.activity_id')?input('param.activity_id'):0; 
//    $activity_id =1;
//     $map = [];
//     if($activity_id>0){ 
//         // 判断当前登录用户是否是活动管理员
//         $sql = 'find_in_set ("'.$user_id.'", user_ids)';
//         $res = model('Activity')->where($sql)->where('id',$activity_id)->count();
//         if(!$res){
//             $this->error('你不是活动管理员！');  
//         }
//         $map['activity_id'] = $activity_id;
//     }

//     $data = model('Enrollment')
//         ->with('user')
//         ->where($map)
//         ->order('createtime desc') // 排序字段
//         ->paginate($per_page);

//     $this->success('查询成功！', $data);    
// }


// 获取活动报名列表
public function enrollment_list(){
    $user_id = $this->auth->id; // 获取当前登录用户ID
    $per_page = input('?param.per_page')?input('param.per_page'):6;

    $activity_id = input('?param.activity_id')?input('param.activity_id'):0; 
    
    $map = [];
    if($activity_id>0){ 
        // 判断当前登录用户是否是活动管理员
        $sql = 'find_in_set ("'.$user_id.'", user_ids)';
        $res = model('Activity')->where($sql)->where('id',$activity_id)->count();
        if(!$res){
            $this->error('你不是活动管理员！');  
        }
        $map['activity_id'] = $activity_id;
    }

    $data = model('Enrollment')
        ->with('user')
        ->where($map)
        ->order('createtime desc') // 排序字段
        ->paginate($per_page);

    $this->success('查询成功！', $data);    
}

// 签到
// public function checkin(){
//     $user_id = $this->auth->id; // 获取当前登录用户ID
//     if(input('?param.ac_id')&&input('?param.en_id')){
//         $ac_id = input('param.ac_id'); 
//         $en_id = input('param.en_id'); 
//         // 判断当前登录用户是否是活动管理员
//         $sql = 'find_in_set ("'.$user_id.'", user_ids)';
//         $res = model('Activity')->where($sql)->where('id',$ac_id)->count();
//         if(!$res){
//             $this->error('你不是活动管理员！');  
//         }

//         $res = model('Enrollment') ->where('id',$en_id)->update(['checktime'=>time()]);
//         if($res){
//             $this->success('签到成功！');   
//         }else{
//             $this->error('签到失败！');  
//         }
//     }else{
//         $this->error('参数不正确！');  
//     }
// }

// 签到
public function checkin(){
    $user_id = $this->auth->id; // 获取当前登录用户ID
    if(input('?param.ac_id')&&input('?param.en_id')){
        $ac_id = input('param.ac_id'); 
        $en_id = input('param.en_id'); 
        // 判断当前登录用户是否是活动管理员
        $sql = 'find_in_set ("'.$user_id.'", user_ids)';
        $res = model('Activity')->where($sql)->where('id',$ac_id)->count();
        if(!$res){
            $this->error('你不是活动管理员！');  
        }

        $res = model('Enrollment') ->where('id',$en_id)->update(['checktime'=>time()]);
        if($res){
            $this->success('签到成功！');   
        }else{
            $this->error('签到失败！');  
        }
    }else{
        $this->error('参数不正确！');  
    }
}


// 报名
public function add(){
    $params = input('post.');
    // 检测报名名额
    $activity =model('Activity')->where('id',$params['activity_id'])->find();
    if($activity['count'] == $activity['quota']) $this->error('活动名额已满！'); 

    // 检测用户是否重复报名
    $count = model('Enrollment')->where(['user_id'=>$this->auth->id,'activity_id'=>$params['activity_id']])->count();
    if($count>0) $this->error('重复报名！'); 

    $data['user_id'] = $this->auth->id; // 获取登录用户ID
    $data['activity_id'] = $params['activity_id'];
    $data['name'] = $params['name'];
    $data['phone'] = $params['phone'];
    $data['fee'] = $params['fee'];
    $data['pay_status'] = $params['fee']>0?1:2; // 费用大于0，设置1，免费活动设置为2
    $data['extension'] = $params['extension'];
    $res = model('Enrollment')->create($data);
    if($res){
        model('Activity')->where('id',$params['activity_id'])->setInc('count'); // 报名成功，扣除活动名额
        $this->success('报名成功！');    

    }else{
        $this->error('报名失败！'); 
    }

}

// 获取我管理活动列表
public function manageactivity()
{
    $user_id = $this->auth->id; // 获取当前登录用户ID
    $per_page = input('?param.per_page')?input('param.per_page'):6;
    $sql = 'find_in_set ("'.$user_id.'", user_ids)';

    $data = model('Activity')
        ->where($sql)
        ->order('weigh desc') // 排序字段
        ->paginate($per_page);

    $this->success('查询成功！', $data);    
}


}
